/**
  题目:
     翻转一棵二叉树。

     示例：
     
     输入：
     
          4
        /   \
       2     7
      / \   / \
     1   3 6   9
     输出：
     
          4
        /   \
       7     2
      / \   / \
     9   6 3   1

 
 
 
   思路:
      1. 递归来解决，需要注意的是这道题要和树的镜像区分开来
       
    
*/
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
invertSubTree(root);
return root;
    }

    void invertSubTree(TreeNode*node){
        if(!node){
            return ;
        }
        swap(node->left,node->right);
        invertSubTree(node->left);
        invertSubTree(node->right);
        return;
    }
};